﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using NUnit.Framework;
using Spring.Context;
using Spring.Context.Support;
using GRUPO_4.Negocio;
using GRUPO_4.Dominio;

namespace GRUPO_4.Pruebas
{
    [TestFixture]
    public class TestContratoService
    {
        private IApplicationContext contexto = null;
        private int Codigo;
        private int idContrato;

        [TestFixtureSetUp]
        public void InicializarSpring()
        {
            this.contexto = new XmlApplicationContext(
                "assembly://GRUPO-4/GRUPO_4/CapaNegocio.xml",
                "assembly://GRUPO-4/GRUPO_4/CapaPersistencia.xml");                                 
        }

        [Test]
        public void TestRealizarContratoCorrectamente()
        {
            ContratoService contratoService = (ContratoService)this.contexto.GetObject("contratoService");
            Assert.NotNull(contratoService);
            Contrato contratoRealizado = null;
            Assert.DoesNotThrow(delegate
            {
                Contrato contratonuevo = new Contrato();

                contratonuevo.codContrato = 333122;
                contratonuevo.codContrato = 123;
                contratonuevo.descripcionContrato = "Fulb";
               
                contratoRealizado = contratoService.CrearContrato(contratonuevo);
            });

            Assert.NotNull(contratoRealizado);
            Assert.Greater(contratoRealizado.codContrato, 0);
        }
        [Test]
        public void TestEliminarContrato()
        {

            ContratoService contratoService = (ContratoService)this.contexto.GetObject("contratoService");
            Assert.NotNull(contratoService);
            Contrato contratoExiste = contratoService.ObtenerContrato(3122);
            Contrato contratoEliminado = null;
            Assert.DoesNotThrow(delegate
            {
                contratoService.EliminarContrato(contratoExiste);
            });
            Assert.Null(contratoEliminado);
            
        }
        [Test]
        public void TestListarContrato()
        {
            ContratoService contratoService = (ContratoService)this.contexto.GetObject("contratoService");
            Assert.NotNull(contratoService);
            ICollection<Contrato> listaContrato = null;
            Assert.DoesNotThrow(delegate
            {
                listaContrato = contratoService.ListarTodoslosContratos();
            });
            Console.WriteLine(listaContrato.Count);
            Assert.Greater(listaContrato.Count, 0);
            foreach (Contrato Ofer in listaContrato)
            {
                Console.WriteLine(Ofer.codContrato + "|" + Ofer.descripcionContrato);
            }
        }
        //[Test]
        //public void TestConsultarContrato()
        //{
        //    ContratoService contratoService = (ContratoService)this.contexto.GetObject("contratoService");
        //    Assert.NotNull(contratoService);
        //    ContratoService contratoConsultado = null;
        //    contratoConsultado = contratoService.ObtenerContrato(3123);
        //    Assert.NotNull(contratoConsultado);
        //}
        [Test]
        public void TestConsultarContrato()
        {
            ContratoService contratoService = (ContratoService)this.contexto.GetObject("contratoService");
            Assert.NotNull(contratoService);
            Contrato contratoConsultado = null;
            contratoConsultado = contratoService.ObtenerContrato(123);
            Assert.NotNull(contratoConsultado);
        }

       

    }
}